// 获取索引
const Inde = function (arr, num) {
  var i
  arr.forEach((item, index) => {
    if (item < num && num <= arr[index + 1]) {
      i = index
    }
  })
  return i
}

// 计算IAQI
const IAQI = function (type, num) {
  var AQI = [0, 50, 100, 150, 200, 300, 400, 500]
  if (type === 'SO2' && num > 800) {
    return 0
  }
  if (type === 'O3' && num > 800) {
    return 0
  }
  // 参与计算的参数可添加
  var data = {
    SO2: [0, 150, 500, 650, 800],
    NO2: [0, 100, 200, 700, 1200, 2340, 3090, 3840],
    PM10: [0, 50, 150, 250, 350, 420, 500, 600],
    CO: [0, 5, 10, 35, 90, 120, 150],
    O3: [0, 160, 200, 300, 400, 800, 1000, 1200],
    'PM2.5': [0, 35, 75, 115, 150, 250, 350, 500]
  }
  if (!data[type]) {
    return 0
  }
  var index = Inde(data[type], num)
  var BPH = data[type][index + 1]
  var BPL = data[type][index]
  var IAQIH = AQI[index + 1]
  var IAQIL = AQI[index]
  var IAQIP = (IAQIH - IAQIL) * (num - BPL) / (BPH - BPL) + IAQIL
  return IAQIP
}

// 排序
const sot = function (a, b) {
  if (a.value === b.value) {
    return 0
  } else {
    return a.value - b.value
  }
}

// 获取AQI 返回值为value:key形式
const getAqi = function (params) {
  
  var arr = []
  for (var key in params) {
    if (Object.prototype.hasOwnProperty.call(params, key)) {
      if (params[key]) {
        var iaqi = IAQI(key, params[key])
        if (iaqi) {
          var item = {
            key,
            value: iaqi
          }
          arr.push(item)
        }
      }
    }
  }
  return arr.sort(sot)[arr.sort(sot).length - 1]
}

export default getAqi
